#pragma once

#include "IAtraccion.h"
#include "Cadena.h"
#include "Puntero.h"
#include "Ciudad.h"
#include "IArbol.h"
#include "Tupla.h"

class Atraccion : public IAtraccion
{
public:
	
	Atraccion(Cadena identificador, Cadena nombre, nat horarioInicio, nat horarioFin, pCiudad ciudad, nat precio);

    Cadena ObtenerIdentificador() const;
	Cadena ObtenerNombre() const ;
	nat ObtenerHorarioInicio() const;
	nat ObtenerHorarioFin() const ;
	pCiudad ObtenerCiudad() const ; 
	nat ObtenerPrecio() const ;
	
    Iterador<Tupla<nat, int, Cadena>> ObtenerCalificaciones() const;
	
	void AgregarOActualizarCalificacion(Tupla<nat, int, Cadena> &cal);
	
	bool operator==(const IAtraccion& a) const ;
	
private:
	
	Cadena identificador;
	Cadena nombre;
	nat horarioInicio;
	nat horarioFin;
	pCiudad ciudad;
	nat precio;
	Puntero<IArbol<Tupla<nat, int, Cadena>>> calificaciones;
	
};
